From: Don Slutz Date: Thu, 3 Apr 2014 19:06:57 +0000 (-0400) Subject: xenctx: Add command line option -t (--tag-stack-dump) X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~5271 X-Git-Url: https://dgit.raspbian.org/%22http:/www.example.com/cgi/%22https:/%22bookmarks://%22Dat/%22http:/www.example.com/cgi/%22https:/%22bookmarks:/%22Dat?a=commitdiff_plain;h=8ccc27fea4a7feb90289ada8f04d47d70985e419;p=xen.git xenctx: Add command line option -t (--tag-stack-dump) If specified, add stack address to dump. This is not the default because the result exceeds 80 characters per line. Here is an example: Stack: ffffffff803ddf90: ffffffff80048d19 0000000000200800 ffffffff803e7801 0000000000086800 ffffffff803ddfb0: 0000000000000000 ffffffff80430720 ffffffff803e722f 80008e000010019c ffffffff803ddfd0: 00000000ffffffff 0000000000000000 0000000000000000 0000000000200000 ffffffff803ddff0: 0000000000000000 0000000000000000 Signed-off-by: Don Slutz Reviewed-by: George Dunlap Acked-by: Ian Campbell --- diff --git a/tools/xentrace/xenctx.c b/tools/xentrace/xenctx.c index 82cf6b067e..145c9901db 100644 --- a/tools/xentrace/xenctx.c +++ b/tools/xentrace/xenctx.c @@ -40,6 +40,7 @@ static struct xenctx { int bytes_per_line; int lines; int decode_as_ascii; + int tag_stack_dump; int all_vcpus; int self_paused; xc_dominfo_t dominfo; @@ -689,6 +690,11 @@ static int print_stack(vcpu_guest_context_any_t *ctx, int vcpu, int width) int j = 0; int k; + if ( xenctx.tag_stack_dump ) + { + print_stack_word(stack, width); + printf(":"); + } while ( stack < stack_limit && stack < stack_pointer(ctx) + i * xenctx.bytes_per_line ) { @@ -901,13 +907,15 @@ static void usage(void) printf(" if stack limit reached.\n"); printf(" -D, --decode-as-ascii\n"); printf(" add a decode of Stack dump as ascii.\n"); + printf(" -t, --tag-stack-dump\n"); + printf(" add address on each line of Stack dump.\n"); } int main(int argc, char **argv) { int ch; int ret; - static const char *sopts = "fs:hak:SCn:b:l:D"; + static const char *sopts = "fs:hak:SCn:b:l:Dt"; static const struct option lopts[] = { {"stack-trace", 0, NULL, 'S'}, {"symbol-table", 1, NULL, 's'}, @@ -915,6 +923,7 @@ int main(int argc, char **argv) {"kernel-start", 1, NULL, 'k'}, {"display-stack-pages", 0, NULL, 'n'}, {"decode-as-ascii", 0, NULL, 'D'}, + {"tag-stack-dump", 0, NULL, 't'}, {"bytes-per-line", 1, NULL, 'b'}, {"lines", 1, NULL, 'l'}, {"all", 0, NULL, 'a'}, @@ -957,6 +966,9 @@ int main(int argc, char **argv) case 'D': xenctx.decode_as_ascii = 1; break; + case 't': + xenctx.tag_stack_dump = 1; + break; case 'b': xenctx.bytes_per_line = strtol(optarg, NULL, 0); if ( xenctx.bytes_per_line < 4 ||